package ReflectTest01;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/*
暴力反射
 public void setAccessible(boolean flag):值为true,取消访问检查

通过反射实现如下操作
Student s=new Student("姜恒星");
System.out.println(s);
 */
public class ReflectDemo02 {
    public static void main(String[] args) throws NoSuchMethodException, ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException {
        //获取class对象
        Class<?> c = Class.forName("Reflect.Student");
        //private Student(String name)
        ////getDeclaredConstructor(类<?>... parameterTypes)返回一个 Constructor对象，该对象反映 Constructor对象表示的类或接口的指定类函数。
        Constructor<?> con = c.getDeclaredConstructor(String.class);

        //暴力反射
//        public void setAccessible(boolean flag):值为true,取消访问检查
        con.setAccessible(true);//可以使用私有构造方法创建对象

        Object obj = con.newInstance("姜恒星");
        System.out.println(obj);//IllegalAccessException非法访问私有不能创建
    }
}
